package com.tarena.lbs.message.web.mapper;

import com.tarena.lbs.pojo.message.dos.Msg;
import com.tarena.lbs.pojo.message.dos.TriggerMsgActionTemplate;
import com.tarena.lbs.pojo.message.param.TriggerMessageQueryParam;
import com.tarena.lbs.pojo.message.query.MessageQuery;
import java.util.List;

/**
 * 针对表【msg】的数据库操作Mapper
 *
 * @author
 * @createDate 2023-12-29 11:46:01
 * @Entity com.tarena.lbs.message.main.domain.Msg
 */
public interface MsgMapper {

    /**
     * 根据主键删除记录
     *
     * @param id 主键
     * @return 删除的记录数
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 插入记录
     *
     * @param record 需要插入的记录
     * @return 插入的记录数
     */
    int insert(Msg record);

    /**
     * 选择性地插入记录
     *
     * @param record 需要插入的记录
     * @return 插入的记录数
     */
    int insertSelective(Msg record);

    /**
     * 根据主键查询记录
     *
     * @param id 主键
     * @return 查询到的记录
     */
    Msg selectByPrimaryKey(Long id);

    /**
     * 查询用户最新消息
     *
     * @param messageQuery 消息查询条件
     * @return 查询结果
     */
    List<Msg> selectUserNewMessage(MessageQuery messageQuery);

    /**
     * 查询所有记录
     *
     * @return 所有记录的列表
     */
    List<Msg> selectAll();

    /**
     * 根据定时任务编号查询消息
     *
     * @param timingMsgTaskId 定时任务编号
     * @return 查询结果
     */
    List<Msg> selectByTimingMsgTaskId(Integer timingMsgTaskId);

    /**
     * 根据主键更新记录，选择性地更新字段
     *
     * @param record 需要更新的记录
     * @return 更新的记录数
     */
    int updateByPrimaryKeySelective(Msg record);

    /**
     * 根据主键更新记录
     *
     * @param record 需要更新的记录
     * @return 更新的记录数
     */
    int updateByPrimaryKey(Msg record);

    /**
     * 功能描述: 行为触发列表
     */
    List<TriggerMsgActionTemplate> getActionAll(TriggerMessageQueryParam param);
}